﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using System.Data.SqlClient;
using QLKhachSan.DAO;
using QLKhachSan.DTO;
using QLKhachSan.BUS;
using DevExpress.XtraEditors;

namespace QLKhachSan.GUI
{
    public partial class fDatPhong : DevExpress.XtraBars.Ribbon.RibbonForm
    {
      
        public fDatPhong()
        {
            InitializeComponent();
            
        }
        private fDanhSachPhong _fDanhSachPhong ;    
        public static DataTable dt = new DataTable();
        private int r;
        private fInBaoCao _fInBaoCao;
        public static int maPhieuDat;
         
        private void fDatPhong_Load(object sender, EventArgs e)
        {
            // Chi Tiet Dat Truoc Phong
            textBoxTenP.Enabled = false;
            textBoxTenP.Text = fDanhSachPhong._TenP;            
           
            if (dt.Rows.Count > 0)
            {
                dataGridViewP.DataSource = dt;
            }
            else {
                try {
                    dt.Columns.Add("Tên Phòng");
                    dt.Columns.Add("Ngày Trả Phòng Dự Kiến");
                } 
                catch(Exception)
                {}

            }
            dataGridViewP.ReadOnly = true;
            if(fDanhSachPhong.coDat)
            {
                dateTimePickerNgayNhanP.MinDate = fDanhSachPhong.ngayTra.Date;
                dateTimePickerNgayTra.MinDate = fDanhSachPhong.ngayTra.Date.AddDays(2);
            }
            else
            {
               dateTimePickerNgayTra.MinDate = DateTime.Now.AddDays(2);
               dateTimePickerNgayNhanP.MinDate = DateTime.Now.AddDays(1);

            }
            // Thong Tin Khach Hang
            textBoxTenKH.ResetText();
            textBoxCMND.ResetText();
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxTien.ResetText();
            dateTimePickerNgayDatP.Enabled = false;
            dateTimePickerNgayNhanP.MinDate = DateTime.Now;
            radioButtonNam.Checked = true;
            DataTable dta_nv = DAO_NhanVien.hienthiDanhSachNhanVienTheoMaNV(int.Parse(fLogin.maNV));
            textBoxTenNV.Text =  dta_nv.Rows[0]["TenNV"].ToString();
            groupControlKH.Enabled = false;
            simpleButtonHuyTK.Enabled = false;
            simpleButtonLuu.Enabled = false;
            simpleButtonHuyD.Enabled = true;
            textBoxQuocTich.Text = "Việt Nam";
        }

        private void textBoxCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxSDT_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void textBoxTien_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) && (e.KeyChar != '.'))
                e.Handled = true;
        }

        private void simpleButtonThem_Click(object sender, EventArgs e)
        {
            if (_fDanhSachPhong == null || _fDanhSachPhong.IsDisposed) // Chua Tao or Chua Mo fDatPhong, Tạo Mới fDatPhong
            {
                this.Hide();
                _fDanhSachPhong = new fDanhSachPhong();
                _fDanhSachPhong.MdiParent = fMain.ActiveForm;
                _fDanhSachPhong.Show();
            }
            else
            {
                this.Hide();
                _fDanhSachPhong.Close();
                _fDanhSachPhong = new fDanhSachPhong();
                _fDanhSachPhong.MdiParent = fMain.ActiveForm;
                _fDanhSachPhong.Show();
            } 
        }

        private void simpleButtonOK_Click(object sender, EventArgs e)
        {
            if (textBoxTenP.Text != "")
            {
              
                if(dateTimePickerNgayTra.Value > DateTime.Now){
                 int dem=0;
               for (int i = 0; i < dt.Rows.Count;i++ ) 
               {
                   if (dt.Rows[i][0].ToString() == textBoxTenP.Text.ToString()) {
                       dem++;
                       break;
                   }
               }
               if(dem==0){
                    dt.Rows.Add(textBoxTenP.Text, dateTimePickerNgayTra.Text + "AM");
                    dataGridViewP.DataSource = dt;
                    textBoxTenP.ResetText();
                    textBoxTenKH.Focus();                    
               }
               else
               {                   
                   MessageBox.Show("Phòng này đã có rồi!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                   textBoxTenP.ResetText();
               }
                }else{
                MessageBox.Show("Ngày Trả Không Hợp Lệ (Bé hơn Thời gian hiện tại)!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Chưa có thông tin Phòng!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }      
        }

        private void dataGridViewP_MouseClick(object sender, MouseEventArgs e)
        {
            try
            {                
                r = dataGridViewP.CurrentCell.RowIndex;             
                textBoxTenP.Text = dataGridViewP.Rows[r].Cells[0].Value.ToString();
                dateTimePickerNgayTra.Text = dataGridViewP.Rows[r].Cells[1].Value.ToString();
            }
            catch (Exception ){}
        }

      

        private void simpleButtonHuy_Click(object sender, EventArgs e)
        {      
            
            if (textBoxTenP.Text != "")
            {
                if(r < dataGridViewP.Rows.Count)
                {
                    try {
                    dt.Rows.RemoveAt(r);                
                    dataGridViewP.DataSource = dt;
                    MessageBox.Show("Hủy Thành Công", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    textBoxTenP.ResetText();
                     }
                catch
                    (Exception)
                { }
                }
            }
            else
            {
                MessageBox.Show("Chưa chọn Phòng cần Hủy!!!???", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void simpleButtonHuyD_Click(object sender, EventArgs e)
        {
            textBoxTenKH.ResetText();
            textBoxTenP.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.ResetText();
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxTien.ResetText();
            dt.Clear();
            this.Close();
            
        }

        private void simpleButtonLap_Click(object sender, EventArgs e)
        {
              if (dataGridViewP.Rows.Count > 1)
            {
            textBoxTenKH.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.Text = "Việt Nam";
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxDiaChi.ResetText();
            textBoxTenNV.Enabled = false;
            dateTimePickerNgayDatP.Enabled = false;
            radioButtonNam.Checked = true;
            DataTable dt_nv = BUS_NhanVien.hienthiDanhSachNhanVien();
           
            groupControlKH.Enabled = true;
            simpleButtonHuyTK.Enabled = true;
            simpleButtonLuu.Enabled = true;
            simpleButtonThem.Enabled = false;
            simpleButtonLap.Enabled = false;
            simpleButtonHuyD.Enabled = false;
            }
              else
              {
                  MessageBox.Show("Chưa có Phòng để lập Phiếu!!???", "Lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
              }

        }

        private void simpleButtonHuyTK_Click(object sender, EventArgs e)
        {
            textBoxTenKH.ResetText();
            textBoxTenP.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.Text = "Việt Nam";
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxDiaChi.ResetText();
            simpleButtonHuyD.Enabled = true;            
            dataGridViewP.DataSource = dt;
            textBoxTenKH.ResetText();
            textBoxCMND.ResetText();
            textBoxQuocTich.ResetText();
            textBoxSDT.ResetText();
            textBoxTien.ResetText();
            textBoxTien.ResetText();
            dateTimePickerNgayDatP.Enabled = false;
            radioButtonNam.Checked = true;
           
            groupControlKH.Enabled = false;
            simpleButtonHuyTK.Enabled = false;
            simpleButtonLuu.Enabled = false;
            simpleButtonThem.Enabled = true;
            simpleButtonLap.Enabled = true;
        }

        private void simpleButtonLuu_Click(object sender, EventArgs e)
        {
            
                if (textBoxTenKH.Text.Trim() != "" && textBoxTien.Text.Trim() != "" && textBoxSDT.Text.Trim() != "" &&
                textBoxDiaChi.Text.Trim() != "" && textBoxQuocTich.Text.Trim() != "" && textBoxCMND.Text.Trim() != "")
                {
                        DateTime timemin = DateTime.Parse(dt.Rows[0][1].ToString());
                        for (int i = 1; i < dt.Rows.Count; i++)
                        {
                            if (timemin > DateTime.Parse(dt.Rows[i][1].ToString()))
                            {
                                timemin = DateTime.Parse(dt.Rows[i][1].ToString());
                            }
                        }
                        if (dateTimePickerNgayNhanP.Value > DateTime.Now && dateTimePickerNgayNhanP.Value < timemin)
                        {
                            if (MessageBox.Show("Bạn có Chắc chắn lập Phiếu đặt Phòng Trên???", "Note !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                // Them Khach Hang
                                DTO_KhachHang dt_kh = new DTO_KhachHang();
                                dt_kh.TenKH = textBoxTenKH.Text.Trim();
                                dt_kh.CMND = textBoxCMND.Text.Trim();
                                if (radioButtonNam.Checked == true)
                                {
                                    dt_kh.GioiTinh = "Nam";
                                }
                                else
                                {
                                    dt_kh.GioiTinh = "Nữ";
                                }
                                dt_kh.SDT = textBoxSDT.Text.Trim();
                                dt_kh.QuocTich = textBoxQuocTich.Text.Trim();
                                dt_kh.DiaChi = textBoxDiaChi.Text.Trim();
                                dt_kh.DiaChiThue = "";
                                dt_kh.MaSoThue = "";
                                BUS_KhachHang.themKhachHang(dt_kh);

                                // Them Phieu Dat Phong
                                DTO_PhieuDatPhong dt_pdp = new DTO_PhieuDatPhong();
                                DataTable kh = BUS_KhachHang.hienthiDanhSachKhachHang();
                                dt_pdp.MaKH = int.Parse(kh.Rows[kh.Rows.Count - 1]["MaKH"].ToString());
                                dt_pdp.MaNV = int.Parse(fLogin.maNV);                                
                                dateTimePickerNgayNhanP.Text += "PM";
                                dt_pdp.NgayDat = DateTime.Parse( dateTimePickerNgayDatP.Value.ToString());
                                dt_pdp.NgayDen = DateTime.Parse(dateTimePickerNgayNhanP.Text);
                                dt_pdp.TienCoc = int.Parse(textBoxTien.Text.ToString());
                                dt_pdp.DaNhan = "Chưa";
                                BUS_PhieuDatPhong.themPhieuDatPhong(dt_pdp);

                                //Them CT Phieu Dat Phong
                                string _TenPhong = "";
                                DTO_CTPhieuDatPhong dt_ctp = new DTO_CTPhieuDatPhong();
                                DataTable pdp = BUS_PhieuDatPhong.hienthiDanhSachPhieuDatPhong();
                                dt_ctp.MaPhieuDat = int.Parse(pdp.Rows[pdp.Rows.Count - 1]["MaPhieuDat"].ToString());
                                DTO_Phong dt_p = new DTO_Phong();
                                for (int i = 0; i < dataGridViewP.Rows.Count - 1 ; i++)
                                {
                                    // Them CT Phieu                                    
                                    dt_ctp.TenPhong = dataGridViewP.Rows[i].Cells[0].Value.ToString();
                                    dt_ctp.NgayTra = DateTime.Parse(dataGridViewP.Rows[i].Cells[1].Value.ToString());
                                    BUS_CTPhieuDatPhong.themCTPhieuDatPhong(dt_ctp);
                                    _TenPhong += "  " + dataGridViewP.Rows[i].Cells[0].Value.ToString() + " ,";

                                    // Sua Trang Thai Phong
                                    dt_p.TenPhong = dt.Rows[i][0].ToString();
                                    dt_p.MaTrangThai = 2;
                                    BUS_Phong.suaPhongTheoTrangThai(dt_p);
                                }
                                maPhieuDat = int.Parse(pdp.Rows[pdp.Rows.Count - 1]["MaPhieuDat"].ToString());
                                MessageBox.Show("Mã Phiếu Đặt là " + pdp.Rows[pdp.Rows.Count - 1]["MaPhieuDat"].ToString() + "\n" + "Đã đặt phòng : " + _TenPhong + "\n Và Đóng Form & In Phiếu Đặt Phòng  ", "Thông Báo !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                simpleButtonHuyD_Click(sender, e);
                                this.Close();                             
                                _fInBaoCao = new fInBaoCao();
                                _fInBaoCao.MdiParent = fMain.ActiveForm;
                                _fInBaoCao.Show();
                            }
                        }
                        else
                        {
                            MessageBox.Show("Ngày Nhận Phòng chưa hợp lệ(Phải lớn hơn thời gian hiện tại, Bé hơn ngày Trả dự kiến)!!!???", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }                   
                }
                else
                {
                    MessageBox.Show("Chưa Thêm Thông tin Khách Hàng Đầy đủ!!???", "Lỗi !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

           
        }

        private void textBoxQuocTich_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            textBoxQuocTich.ResetText();
        }

        private void textBoxCMND_Leave(object sender, EventArgs e)
        {
            if (textBoxQuocTich.Text == "Việt Nam")
            {
                if (textBoxCMND.Text.Trim() != "")
                {
                    if (textBoxCMND.TextLength != 9)
                    {
                        MessageBox.Show("Số CMND chưa hợp lệ (Số đã nhập : " + textBoxCMND.TextLength.ToString() + " số) !!!??? (Số CMND 9 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBoxCMND.Focus();
                    }
                }
            }
        }

        private void textBoxSDT_Leave(object sender, EventArgs e)
        {
            if (textBoxQuocTich.Text == "Việt Nam")
            {
                if(textBoxSDT.Text.Trim() !="")
                {
            if (!(textBoxSDT.TextLength >= 10 && textBoxSDT.TextLength <= 11))
            {
                MessageBox.Show("Số SĐT di dộng chưa hợp lệ (Số đã nhập : " + textBoxSDT.TextLength.ToString() + " số)!!!??? (Số SĐT di động 10-11 số)", "Error !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                textBoxSDT.Focus();
            }
                }

            }
        }
       
    }
    
}